home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / perl5 / 5.8.7 / ExtUtils / MM.pm < prev    next >
Text File  |  2006-04-25  |  2KB  |  81 lines

  1. package ExtUtils::MM;
  2.  
  3. use strict;
  4. use Config;
  5. use vars qw(@ISA $VERSION);
  6. $VERSION = 0.04;
  7.  
  8. require ExtUtils::Liblist;
  9. require ExtUtils::MakeMaker;
  10.  
  11. @ISA = qw(ExtUtils::Liblist ExtUtils::MakeMaker);
  12.  
  13. =head1 NAME
  14.  
  15. ExtUtils::MM - OS adjusted ExtUtils::MakeMaker subclass
  16.  
  17. =head1 SYNOPSIS
  18.  
  19.   require ExtUtils::MM;
  20.   my $mm = MM->new(...);
  21.  
  22. =head1 DESCRIPTION
  23.  
  24. B<FOR INTERNAL USE ONLY>
  25.  
  26. ExtUtils::MM is a subclass of ExtUtils::MakeMaker which automatically
  27. chooses the appropriate OS specific subclass for you
  28. (ie. ExtUils::MM_Unix, etc...).
  29.  
  30. It also provides a convenient alias via the MM class (I didn't want
  31. MakeMaker modules outside of ExtUtils/).
  32.  
  33. This class might turn out to be a temporary solution, but MM won't go
  34. away.
  35.  
  36. =cut
  37.  
  38. {
  39.     # Convenient alias.
  40.     package MM;
  41.     use vars qw(@ISA);
  42.     @ISA = qw(ExtUtils::MM);
  43.     sub DESTROY {}
  44. }
  45.  
  46. my %Is = ();
  47. $Is{VMS}    = 1 if $^O eq 'VMS';
  48. $Is{OS2}    = 1 if $^O eq 'os2';
  49. $Is{MacOS}  = 1 if $^O eq 'MacOS';
  50. if( $^O eq 'MSWin32' ) {
  51.     Win32::IsWin95() ? $Is{Win95} = 1 : $Is{Win32} = 1;
  52. }
  53. $Is{UWIN}   = 1 if $^O eq 'uwin';
  54. $Is{Cygwin} = 1 if $^O eq 'cygwin';
  55. $Is{NW5}    = 1 if $Config{osname} eq 'NetWare';  # intentional
  56. $Is{BeOS}   = 1 if $^O =~ /beos/i;    # XXX should this be that loose?
  57. $Is{DOS}    = 1 if $^O eq 'dos';
  58.  
  59. $Is{Unix}   = 1 if !keys %Is;
  60.  
  61. if( $Is{NW5} ) {
  62.     $^O = 'NetWare';
  63.     delete $Is{Win32};
  64. }
  65.  
  66. _assert( keys %Is == 1 );
  67. my($OS) = keys %Is;
  68.  
  69.  
  70. my $class = "ExtUtils::MM_$OS";
  71. eval "require $class" unless $INC{"ExtUtils/MM_$OS.pm"};
  72. die $@ if $@;
  73. unshift @ISA, $class;
  74.  
  75.  
  76. sub _assert {
  77.     my $sanity = shift;
  78.     die sprintf "Assert failed at %s line %d\n", (caller)[1,2] unless $sanity;
  79.     return;
  80. }
  81.